//
//  WTabBar.m
//  Hxcsfw
//
//  Created by 企友软mac on 2017/11/3.
//  Copyright © 2017年 企友软mac. All rights reserved.
//

#import "WTabBar.h"

#define AddButtonMargin 10

@interface WTabBar()


@end

@implementation WTabBar

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.layer.borderColor = [WRGBColor(113, 102, 155) CGColor];
        UIButton *plusBtn = [[UIButton alloc] init];
//        [plusBtn setBackgroundImage:[UIImage imageNamed:@"WB_WXZ@2x.png"] forState:UIControlStateNormal];

        [plusBtn setImage:[UIImage imageNamed:@"WB_WXZ@2x.png"] forState:UIControlStateNormal];

         plusBtn.size = CGSizeMake(WSCREENH_WIDTH * 0.2, WSCREENH_WIDTH * 0.2);

        if (iPhone6_6s) {
            [plusBtn setImageEdgeInsets:UIEdgeInsetsMake(10, 5, 0, 5)];
            plusBtn.size = CGSizeMake(WSCREENH_WIDTH * 0.2, WSCREENH_WIDTH * 0.2);

        } else if (iPhone5SE) {
            [plusBtn setImageEdgeInsets:UIEdgeInsetsMake(10, 5, -5, 5)];
            plusBtn.size = CGSizeMake(WSCREENH_WIDTH * 0.2, WSCREENH_WIDTH * 0.2 - 5);
        }
//        [plusBtn setBackgroundImage:[UIImage imageNamed:@"WB_XZ@2x.png"] forState:UIControlStateHighlighted];
//        [plusBtn setImage:[UIImage imageNamed:@"WB_XZ@2x.png"] forState:UIControlStateNormal];
//        [plusBtn setImage:[UIImage imageNamed:@"WB_XZ@2x.png"] forState:UIControlStateHighlighted];

//        plusBtn.size = plusBtn.currentBackgroundImage.size;

        [plusBtn addTarget:self action:@selector(plusBtnClick:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:plusBtn];
        self.plusBtn = plusBtn;
        self.barTintColor = WRGBColor(255, 255, 255);
    }
    return self;
}

/**
 *  加号按钮点击
 */
- (void)plusBtnClick:(UIButton *)btn
{

    [btn setImage:[UIImage imageNamed:@"WB_XZ@2x.png"] forState:UIControlStateNormal];
//    [btn setBackgroundImage:[UIImage imageNamed:@"WB_XZ@2x.png"] forState:UIControlStateNormal];
    // 通知代理
    if ([self.delegate respondsToSelector:@selector(tabBarDidClickPlusButton:)]) {
        [self.WTabBarDelegate tabBarDidClickPlusButton:self];
    }
}

/**
 *  想要重新排布系统控件subview的布局，推荐重写layoutSubviews，在调用父类布局后重新排布。
 */
- (void)layoutSubviews
{
    [super layoutSubviews];

    // 1.设置加号按钮的位置
    self.plusBtn.centerX = self.width*0.5;
    self.plusBtn.centerY = self.height*0.2;

    // 2.设置其他tabbarButton的frame
    CGFloat tabBarButtonW = self.width / 5;
    CGFloat tabBarButtonIndex = 0;
    for (UIView *child in self.subviews) {
        Class class = NSClassFromString(@"UITabBarButton");
        if ([child isKindOfClass:class]) {
            // 设置x
            child.x = tabBarButtonIndex * tabBarButtonW;
            // 设置宽度
            child.width = tabBarButtonW;
            // 增加索引
            tabBarButtonIndex++;
        }
    }
}

//重写hitTest方法，去监听"+"按钮和“添加”标签的点击，目的是为了让凸出的部分点击也有反应
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

         //这一个判断是关键，不判断的话push到其他页面，点击“+”按钮的位置也是会有反应的，这样就不好了
         //self.isHidden == NO 说明当前页面是有TabBar的，那么肯定是在根控制器页面
         //在根控制器页面，那么我们就需要判断手指点击的位置是否在“+”按钮或“添加”标签上
         //是的话让“+”按钮自己处理点击事件，不是的话让系统去处理点击事件就可以了
         if (self.isHidden == NO)
        {

        //将当前TabBar的触摸点转换坐标系，转换到“+”按钮的身上，生成一个新的点
            CGPoint newA = [self convertPoint:point toView:self.plusBtn];
        //将当前TabBar的触摸点转换坐标系，转换到“添加”标签的身上，生成一个新的点
        //判断如果这个新的点是在“+”按钮身上，那么处理点击事件最合适的view就是“+”按钮
            if ( [self.plusBtn pointInside:newA withEvent:event])
        {
            return self.plusBtn;
        }
            //判断如果这个新的点是在“添加”标签身上，那么也让“+”按钮处理事件
        else
            {//如果点不在“+”按钮身上，直接让系统处理就可以了

            return [super hitTest:point withEvent:event];
        }
    }
    else
    {
        //TabBar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
            return [super hitTest:point withEvent:event];
    }
}


@end
